using System;
using System.Collections.Generic;
using NHibernate.Validator.Constraints;
using SharpArch.Core.DomainModel;

namespace GoldenBicycleCompany.Core
{
    public class Bicycle : Entity
    {
        [NotNull]
        public virtual BicycleManufacturer BicycleManufacturer { get; set; }

        [NotNull]
        public virtual BicycleType BicycleType { get; set; }

        [NotNull]
        public virtual BicycleRentalRate RentalRate { get; set; }

        [NotNull]
        public virtual Color Color { get; set; }

        public virtual IEnumerable<Maintenance> MaintenanceRecords { get; set; }

        [DomainSignature]
        [NotNullNotEmpty]
        public virtual string BarcodeIdNumber { get; set; }

        [DomainSignature]
        [NotNullNotEmpty]
        public virtual string Model { get; set; }

        public virtual double PurchasePrice { get; set; }

        public virtual string Description { get; set; }

        [DomainSignature]
        [Size(Min=2000)]
        public virtual int YearPurchased { get; set; }

        public virtual bool IsRented { get; set; }

        public virtual bool IsUnderMaintenance { get; set; }
    }
}
